<?php
/**
 * Wandelt in einem Array uebergebene Attribute in einen String um, um diese
 * in einem HTML-Tag verfuegbar machen zu koennen und wandelt einen Attribut-String
 * in ein Array um.
 * 
 * @author		Joachim Ruf
 * @copyright	Copyright (c) 2003-2013 Loresoft Software (http://www.loresoft.de)
 * @license		http://yapary.loresoft.de/lizenzbedingungen     New BSD License
 * 
 * */


Class Yapary_Attribute
{
    
	
	/**
	 * Wandelt eine Reihe von Attributen in einem Array zu einem String um,
	 * um dies in einem Tag platzieren zu koennen
	 * @param array $arrAttributes	: Attribute welche in einen String umgewandelt werden sollen
	 * @param bool $withEmptySpace	: Gibt an ob am Anfang ein Leerzeichen eingefuergt werden soll.
	 * 								  Hilfreich wenn man das Resultat direkt in einem Tag ausgeben moechte
	 * @return string
	 * */
	public function arrayToAttribute (array $arrAttributes = array(), $withEmptySpace = false)
	{
		$result = '';
		if (count($arrAttributes) >= 1) {
			while(list($key, $val) = each($arrAttributes)) {
			    if ($key != '' || $val != '') {
				    $result .= $key.'="'.$val.'" ';
			    }
			}
		}
		
		// Leerzeichen vor Element um von anderen Elementen zu trennen
		if ($result >= '' && $withEmptySpace) {
		    $result = ' '.$result;
		}
		
		return rtrim($result);
	}

	
	/**
	 * Wandelt eine Reihe von Attributen in einem Array zu einem String um,
	 * um dies in einem Tag platzieren zu koennen
	 * @param array $arrAttributes	: Attribute welche in einen String umgewandelt werden sollen
	 * @return string
	 * */
	public function attributeToArray ($attributes)
	{
	    $attributes.=' '; // fuer explode() Leerzeichen am Ende einfuegen
	    $arrResult = array();
	    
	    // Tab=chr(9), Zeilenumbrueche=chr(10)win, chr(13)mac und doppelte Leerzeichen entfernen
	    $attributes = str_replace(array(chr(9), chr(10), chr(13)), ' ', $attributes);
	    $attributes = str_replace('  ', ' ', $attributes);

	    $arrTmp = explode('" ', $attributes);
	    $count = count($arrTmp);
	    if ($count >= 1) {
	        while (list($i,$attr) = each($arrTmp)) {
	            $arrAttr = explode('="', $attr);
                $key = trim($arrAttr[0]);
                if (isset($arrAttr[1])) {
                    $val = trim($arrAttr[1]);
                }
	            
                if ($key != '' && isset($val)) { // Leere Eintraege uebergehen
   	                $arrResult[$key] = $val;
	            }
	        }
	    }
	    
	    return $arrResult;
	}
    
    
}


?>